// 一道题，“解释下面代码的输出，若代码输出有报错，请指出如何修复报错代码”
let count = 2
let user = {
  count: 1,
  getCount: function () {
    return this.count
  }
}
console.log(user.getCount()); // 1
let func = user.getCount  // let func = function(){return this.count} 这不就是函数表达式吗
console.log(func()); // 2 其实还是undefined  除非使用var声明count变量，ES6 模块中this返回的是undefined


// 深入 ES6中的let有什么改变 看看阮一峰的书去 拜了个拜
// 全局环境中，this会返回顶层对象。但是，Node.js 模块中this返回的是当前模块，ES6 模块中this返回的是undefined。
// 函数里面的this，如果函数不是作为对象的方法运行，而是单纯作为函数运行，this会指向顶层对象。但是，严格模式下，这时this会返回undefined。
// 不管是严格模式，还是普通模式，new Function('return this')() ，总是会返回全局对象。但是，如果浏览器用了 CSP（Content Security Policy，内容安全策略），那么eval、new Function这些方法都可能无法使用。

